#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>


int main()
{
  int fd = open("/dev/pts/0", O_WRONLY | O_APPEND);
  if(fd < 0)
  {
    return 1;
  }
  
  const char* message = "hahaha\n";
  while(1)
  {
    write(fd, message, strlen(message));
    sleep(1);
  }
  
  close(fd);
  //while(1)
  //{
  //  printf("pid: %d\n", getpid());
  //  sleep(1);
  //}



















  //printf("stdin->fd: %d\n", stdin->_fileno);
  //printf("stdout->fd: %d\n", stdout->_fileno);
  //printf("stderr->fd: %d\n", stderr->_fileno);

  //FILE* fp = fopen("log.txt", "w");
  //if(fp == NULL)
  //{
  //  return 1;
  //}
  //printf("fd: %d\n", fp->_fileno);

  //FILE* fp1 = fopen("log1.txt", "w");
  //if(fp1 == NULL)
  //{
  //  return 1;
  //}
  //printf("fd: %d\n", fp1->_fileno);

  //FILE* fp2 = fopen("log2.txt", "w");
  //if(fp2 == NULL)
  //{
  //  return 1;
  //}
  //printf("fd: %d\n", fp2->_fileno);

  ////fwrite("hello", 5, 1, fp);

  //fclose(fp);
  //fclose(fp1);
  //fclose(fp2);
}
//{
//  const char* message = "hello Linux!!!\n";
//  write(1, message, strlen(message));
  // fprintf(stdout, "hello: %d\n", 10);
  // fflush(stdout);


  //int fda = open("loga.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
  //printf("fda: %d\n", fda);
  //int fdb = open("logb.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
  //printf("fdb: %d\n", fdb);
  //int fdc = open("logc.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
  //printf("fdc: %d\n", fdc);
  //int fdd = open("logd.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
  //printf("fdd: %d\n", fdd);
  
  // umask(0); 
  //system call
  // int fd = open("log.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
  //int fd = open("log.txt", O_WRONLY | O_CREAT | O_APPEND, 0666);
  //if(fd < 0)
  //{
  //  perror("open fail");
  //  return 1;
  //}
  //
  //const char* message = "hello Linux file\n";
  // const char* message = "abc\n";
  //write(fd, message, strlen(message));

  //close(fd);
  // return 0;
// }












//使用不同的宏代表不同的功能选项
//#define ONE 1         
//#define TWO (1 << 1)
//#define THREE (1 << 2)
//#define FOUR (1 << 3)
//
//void print(int flag)
//{
//  if(flag & ONE)
//  {
//    printf("first option\n");
//  }
//  if(flag & TWO)
//  {
//    printf("second option\n");
//  }
//  if(flag & THREE)
//  {
//    printf("third option\n");
//  }
//  if(flag & FOUR)
//  {
//    printf("fourth option\n");
//  }
//}
//
//int main()
//{
//  print(ONE);
//  printf("\n");
//
//  print(TWO);
//  printf("\n");
//
//  print(ONE | TWO);
//  printf("\n");
//
//  print(ONE | TWO | THREE);
//  printf("\n");
//
//  print(ONE | TWO | THREE | FOUR);
//  printf("\n");
//
//  return 0;
//}


